package com.uzai.console.service.wechatwork;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.uzai.console.dto.wechatwork.devicewxworkinfo.*;
import com.uzai.console.entity.DeviceAuth;
import com.uzai.console.entity.DeviceWxworkInfo;
import com.uzai.console.vo.wechatprivate.devicewechatinfo.DeviceAmountVo;
import com.uzai.console.vo.wechatwork.devicewxworkinfo.DeviceWxworkInfoAddVo;
import com.uzai.console.vo.wechatwork.devicewxworkinfo.DeviceWxworkInfoVo;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

/**
 * 企业微信机器人
 *
 * @author liuqi
 * @date 2021年08月19日 16:06
 */
public interface DeviceWxworkInfoService {

    /**
     * 查询企业微信机器人列表
     *
     * @param deviceWxworkInfoQuery
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    Page<DeviceWxworkInfoVo> findDeviceWxworkInfoList(DeviceWxworkInfoQuery deviceWxworkInfoQuery);

    /**
     * 查询企业微信机器人详情
     *
     * @param deviceWxworkInfoIdDto
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    DeviceWxworkInfoVo findDeviceWxworkInfoInfo(DeviceWxworkInfoIdDto deviceWxworkInfoIdDto);

    /**
     * 修改企业机器人信息
     *
     * @param deviceWxworkInfoDto
     * @author liuqi
     * @date 2021/8/25 11:38
     */
    void updateDeviceWxworkInfo(DeviceWxworkInfoDto deviceWxworkInfoDto);

    /**
     * 批量修改企业机器人信息
     *
     * @param deviceWxworkInfoBatchDto
     * @author liuqi
     * @date 2021/8/25 11:38
     */
    void batchUpdateDeviceWxworkInfo(DeviceWxworkInfoBatchDto deviceWxworkInfoBatchDto);

    /**
     * 企业微信机器人删除
     *
     * @param deviceWxworkInfoDelDto
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    Boolean delDeviceWxworkInfo(DeviceWxworkInfoDelDto deviceWxworkInfoDelDto);

    /**
     * 企业微信机器人批量删除
     *
     * @param deviceWxworkInfoIdListDto
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    Boolean batchDelDeviceWxworkInfo(@RequestBody DeviceWxworkInfoIdListDto deviceWxworkInfoIdListDto);

    /**
     * 更新电脑端客户端软件
     *
     * @param deviceWxworkInfoIdDto
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void updatePcClientSoft(DeviceWxworkInfoIdDto deviceWxworkInfoIdDto);

    /**
     * 批量更新电脑端客户端软件
     *
     * @param deviceWxworkInfoIdListDto
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void batchUpdatePcClientSoft(DeviceWxworkInfoIdListDto deviceWxworkInfoIdListDto);

    /**
     * 重启电脑端客户端软件
     *
     * @param deviceWxworkInfoIdDto
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void restartPcClientSoft(DeviceWxworkInfoIdDto deviceWxworkInfoIdDto);

    /**
     * 批量重启电脑端客户端软件
     *
     * @param deviceWxworkInfoIdListDto
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void batchRestartPcClientSoft(DeviceWxworkInfoIdListDto deviceWxworkInfoIdListDto);


    /**
     * 退出电脑端客户端软件
     *
     * @param deviceWxworkInfoIdDto
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void quitPcClientSoft(DeviceWxworkInfoIdDto deviceWxworkInfoIdDto);

    /**
     * 批量退出电脑端客户端软件
     *
     * @param deviceWxworkInfoIdListDto
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void batchQuitPcClientSoft(DeviceWxworkInfoIdListDto deviceWxworkInfoIdListDto);

    /**
     * 退出电脑端微信
     *
     * @param deviceWxworkInfoIdDto
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void quitPcWechat(DeviceWxworkInfoIdDto deviceWxworkInfoIdDto);

    /**
     * 批量退出电脑端微信
     *
     * @param deviceWxworkInfoIdListDto
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void batchQuitPcWechat(DeviceWxworkInfoIdListDto deviceWxworkInfoIdListDto);

    /**
     * 购买授权
     *
     * @param deviceWxworkInfoBuyAuthDto
     * @author liuqi
     * @date 2021/8/25 11:38
     */
    DeviceWxworkInfoAddVo buyDeviceAuth(DeviceWxworkInfoBuyAuthDto deviceWxworkInfoBuyAuthDto);

    /**
     * 查询添加或者购买总金额
     *
     * @param deviceWxworkAmountDto
     * @author liuqi
     * @date 2021/8/25 11:38
     */
    DeviceAmountVo getAmount(DeviceWxworkAmountDto deviceWxworkAmountDto);

    /**
     * 刷新在线状态
     *
     * @param merId
     * @author liuqi
     * @date 2021/8/25 11:38
     */
    void refreshOnlineStatus(Long merId);


    /**
     * 增加试用期授权
     *
     * @param deviceWxworkInfoAddProbationAuth
     * @author liuqi
     * @date 2021/8/25 11:38
     */
    void addProbationAuth(@RequestBody DeviceWxworkInfoAddProbationAuth deviceWxworkInfoAddProbationAuth);

    /**
     * 转移授权时间
     *
     * @param deviceWxworkInfoTranferAuthTimeDto
     * @author liuqi
     * @date 2021/8/25 11:38
     */
    void transferAuthTime(DeviceWxworkInfoTranferAuthTimeDto deviceWxworkInfoTranferAuthTimeDto);


    /**
     * 刷新企业微信机器人授权信息
     *
     * @param deviceWxworkInfo
     * @return null
     * @author jitwxs
     * @date 2023/8/17 15:47
     */
    void flashDeviceAuth(DeviceWxworkInfo deviceWxworkInfo, List<DeviceAuth> deviceAuthList);

    /**
     * 刷新企业微信机器人授权信息
     *
     * @param deviceWxworkInfo
     * @return null
     * @author jitwxs
     * @date 2023/8/17 15:47
     */
    void flashDeviceAuth(DeviceWxworkInfo deviceWxworkInfo);

    /**
     * 修改工作状态
     *
     * @param deviceWxworkRecvmsgTypeDto
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void updateRecvmsgType(DeviceWxworkRecvmsgTypeDto deviceWxworkRecvmsgTypeDto);

    /**
     * 修改工作状态
     *
     * @param deviceWxworkRecvmsgTypeBatchDto
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void batchUpdateRecvmsgType(DeviceWxworkRecvmsgTypeBatchDto deviceWxworkRecvmsgTypeBatchDto);

    /**
     * 更新手机版
     *
     * @param deviceWxworkInfoIdDto
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void updateMobileClientSoft(DeviceWxworkInfoIdDto deviceWxworkInfoIdDto);

    /**
     * 批量更新手机版
     *
     * @param deviceWxworkInfoIdListDto
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    void batchUpdateMobileClientSoft(DeviceWxworkInfoIdListDto deviceWxworkInfoIdListDto);

    /**
     * 添加企业机器人新版（只负责添加移动端机器人，如果未授权则试用5天）
     *
     * @param deviceWxworkInfoAddDto_new
     * @author liuqi
     * @date 2021/8/25 11:38
     */
    void addDeviceWxworkInfo_new(DeviceWxworkInfoAddDto_new deviceWxworkInfoAddDto_new);
}
